package com.example.practice.bean;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

/**
 * 所有传感器当前值储存类
 * 
 * @author asus
 *
 */
public class SensorValue implements Comparable<SensorValue>, Cloneable {
	private Date updataTime = null; // 取得传感器数据值的时间戳
	private int co2 = -1; // CO2浓度
	private int light = -1; // 灯光强度

	private int airTemper = -1; // 空气温度
	private int airHumid = -1; // 空气湿度
	private int soilTemper = -1; // 土壤温度
	private int soilHumid = -1; // 土壤湿度

	/**
	 * 无参数构造函数
	 * 
	 */
	public SensorValue() {
	}

	/**
	 * 带有参数的构造函数
	 * 
	 * @param updataTime
	 *            更新时间
	 * @param co2
	 *            Co2浓度
	 * @param light
	 *            光照强度
	 * @param airTemper
	 *            空气温度
	 * @param airHumid
	 *            空气湿度
	 * @param soilTemper
	 *            土壤温度
	 * @param soilHumid
	 *            土壤湿度
	 */
	public SensorValue(long updataTime, int co2, int light, int airTemper,
			int airHumid, int soilTemper, int soilHumid) {
		this.updataTime = new Date(updataTime);
		this.co2 = co2;
		this.light = light;
		this.airTemper = airTemper;
		this.airHumid = airHumid;
		this.soilTemper = soilTemper;
		this.soilHumid = soilHumid;
	}

	/**
	 * 将传感器数据转化成字符串
	 * 
	 * @see java.lang.Object#toString()
	 */
	@Override
	public String toString() {
		SimpleDateFormat dateFormat = new SimpleDateFormat(
				"yyyy-MM-dd HH:mm:ss", Locale.CHINESE);
		StringBuffer buffer = new StringBuffer();
		buffer.append("[");
		if (updataTime != null) {
			buffer.append(dateFormat.format(updataTime));
			buffer.append(",");
		}
		buffer.append(",C02=" + co2);
		buffer.append(",light=" + light);
		buffer.append(",airTemper=" + airTemper);
		buffer.append(",airHumid=" + airHumid);
		buffer.append(",soilTemper=" + soilTemper);
		buffer.append(",soilHumid=" + soilHumid);
		buffer.append("]");
		return buffer.toString();
	}

	/**
	 * 传感器时间的比较
	 * 
	 * @see java.lang.Comparable#compareTo(java.lang.Object)
	 */
	@Override
	public int compareTo(SensorValue another) {
		return updataTime.compareTo(another.updataTime);
	}

	/**
	 * 获取更新时间
	 * 
	 * @return 更新时间
	 */
	public Date getUpdataTime() {
		return updataTime;
	}

	/**
	 * 设置更新时间
	 * 
	 * @param updataTime
	 *            更新时间
	 */
	public void setUpdataTime(Date updataTime) {
		this.updataTime = updataTime;
	}

	/**
	 * 获取Co2浓度
	 * 
	 * @return Co2浓度
	 */
	public int getCo2() {
		return co2;
	}

	/**
	 * 设置Co2浓度
	 * 
	 * @param co2
	 *            Co2浓度
	 */
	public void setCo2(int co2) {
		this.co2 = co2;
	}

	/**
	 * 获取光照强度
	 * 
	 * @return 光照强度
	 */
	public int getLight() {
		return light;
	}

	/**
	 * 设置光照强度
	 * 
	 * @param light
	 *            光照强度
	 */
	public void setLight(int light) {
		this.light = light;
	}

	/**
	 * 获取空气温度
	 * 
	 * @return 空气温度
	 */
	public int getAirTemper() {
		return airTemper;
	}

	/**
	 * 设置空气温度
	 * 
	 * @param airTemper
	 *            空气温度
	 */
	public void setAirTemper(int airTemper) {
		this.airTemper = airTemper;
	}

	/**
	 * 获取空气湿度
	 * 
	 * @return 空气湿度
	 */
	public int getAirHumid() {
		return airHumid;
	}

	/**
	 * 设置空气湿度
	 * 
	 * @param airHumid
	 *            空气湿度
	 */
	public void setAirHumid(int airHumid) {
		this.airHumid = airHumid;
	}

	/**
	 * 获取土壤温度
	 * 
	 * @return 土壤温度
	 */
	public int getSoilTemper() {
		return soilTemper;
	}

	/**
	 * 设置土壤温度
	 * 
	 * @param soilTemper
	 *            土壤温度
	 */
	public void setSoilTemper(int soilTemper) {
		this.soilTemper = soilTemper;
	}

	/**
	 * 获取土壤湿度
	 * 
	 * @return 土壤湿度
	 */
	public int getSoilHumid() {
		return soilHumid;
	}

	/**
	 * 设置土壤湿度
	 * 
	 * @param soilHumid
	 *            土壤湿度
	 */
	public void setSoilHumid(int soilHumid) {
		this.soilHumid = soilHumid;
	}

	/**
	 * 克隆对象
	 * 
	 * @see java.lang.Object#clone()
	 */
	public SensorValue clone() {
		SensorValue cloneObj = null;
		try {
			cloneObj = (SensorValue) super.clone();
			if (updataTime != null) {
				cloneObj.updataTime = (Date) updataTime.clone();
			} else {
				cloneObj.updataTime = null;
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return cloneObj;
	}
}
